<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】对象是一种包含已命名的值的集合类型，而数组则是一种包含已编码的值的集合类型。
var o = {						// 对象
    x : 1, 						// 该值命名为x
    y : true					// 该值命名为y
}
var a = [						// 数组
    1, 							// 该值隐含编码为0
    true						// 该值隐含编码为1
]
//【示例2】由于对象的数据存储形式很像数组，因此被称为关联数组，但是它不是真正意义上的数组。关联数组就是将值与特定字符串关联在一起。真正的数组与字符串没有联系，但是它将值和数值（非负整数的下标）关联在一起。
alert(o["x"]);// 返回1，在对象o中，值1与字符串x关联在一起
alert(a[0]); // 返回1，在数组a中，值1与数值0关联在一起

o.x; 								// 返回1，使用点运算符存取属性
o["x"];								// 返回1，使用中括号运算符存取属性
//【示例3】当用点号运算符来存取对象属性时，属性名是用标识符表示的；当用中括号运算符来存取对象属性时，属性名是用字符串表示的，因此可以在运行过程中动态生成字符串。
var o = {							// 对象直接量
    p1 : 1,
    p2 : true
}
for( var i = 1; i < 3; i ++ ){ 	// 循环读取对象的属性值
    alert( o["p" + i] );
}
//【示例4】下面示例使用typeof运算符提示数组实际上为对象类型，其返回值是字符串＂object＂。
var a = [1,2,3] ; 					// 数组直接量
alert( typeof a); 					// 返回数组类型为Object，而不是Array
alert( a.constructor == Array);
	// 返回true，说明数组直接量的构造器是Array
//【示例5】由于对象的属性可以动态添加和删除，当把对象作为集合来看待时，实际上它就是哈希表。
var h = {						// 定义对象h，其数据结构就是哈希表结构
    x:1, 						// 名/值对1
    y:2, 						// 名/值对2
    z:3							// 名/值对3
}

alert(h["x"]);					// 返回1

alert("x" in h); 				// 返回true，说明存在
//【示例6】由于哈希表结构与对象结构完全相同，用户完全可以淡化数据类型的鸿沟，以操作对象的方式操作哈希表。例如，通过构造函数创建哈希表：
var h = new Object();

var h = {};
var h  = {
    x : 1, y : 2
};



</script>
</head>
<body>




</body>
</html>
